libobs_wrapper\data\properties\types/
text.rs1use getters0::Getters;
2
3use crate::{
4 data::properties::{get_enum, macros::unsafe_is_of_type_result, ObsTextInfoType, ObsTextType},
5 run_with_obs,
6};
7
8use super::PropertyCreationInfo;
9
10#[derive(Debug, Getters, Clone)]
11#[skip_new]
12pub struct ObsTextProperty {
13 name: String,
14 description: Option<String>,
15 monospace: bool,
16 text_type: ObsTextType,
17 info_type: ObsTextInfoType,
18 word_wrap: bool,
19}
20
21impl TryFrom<PropertyCreationInfo> for ObsTextProperty {
22 type Error = crate::utils::ObsError;
23
24 fn try_from(
25 PropertyCreationInfo {
26 name,
27 description,
28 pointer,
29 runtime,
30 }: PropertyCreationInfo,
31 ) -> Result<Self, Self::Error> {
32 run_with_obs!(runtime, (pointer), move || {
33 unsafe_is_of_type_result!(Text, pointer)?;
34
35 let info_type = get_enum!(pointer, text_info_type, ObsTextInfoType)?;
36 let text_type = get_enum!(pointer, text_type, ObsTextType)?;
37
38 let monospace = unsafe {
39 libobs::obs_property_text_monospace(pointer.0)
41 };
42 let word_wrap = unsafe {
43 libobs::obs_property_text_info_word_wrap(pointer.0)
45 };
46
47 Ok(ObsTextProperty {
48 name,
49 description,
50 monospace,
51 text_type,
52 info_type,
53 word_wrap,
54 })
55 })?
56 }
57}